import { createSlice } from '@reduxjs/toolkit'
import { get_token, set_token as setToken } from '../../utils/auth';
import { logins } from '../../services/login';

const loginSlice = createSlice({
    name: "login",
    initialState: {
        token: get_token() || "",
        userInfo: null // 新增：存储用户信息（包含id等）
    },
    reducers: {
        set_token(state, action) {
            state.token = action.payload;
            setToken(state.token);
        },
        // 新增：设置用户信息
        set_user_info(state, action) {
            state.userInfo = action.payload;
        },
        // 新增：清除用户信息（退出登录时使用）
        clear_user_info(state) {
            state.userInfo = null;
        }
    }
})

// 导出actions
const { set_token, set_user_info, clear_user_info } = loginSlice.actions;

// 登录异步action
const loginSync = (obj) => {
    return async (dispatch) => {
        const res = await logins(obj);
        if (res.code === 0) {
            // 登录成功时，存储token
            dispatch(set_token(res.data.token));
        }
        return res;
    }
}

export { loginSync, set_user_info, clear_user_info }

export default loginSlice.reducer
    